package com.woniu.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.woniu.entity.PageResult;
import com.woniu.pojo.Car;
import com.woniu.vo.CarOrderDetailVo;
import com.woniu.vo.CarOrderQueryVo;
import com.woniu.vo.CarQueryVo;
import com.woniu.vo.CarWithOrderListVo;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author Energy
 * @since 2022-10-12
 */
public interface ICarService extends IService<Car> {

    List<CarWithOrderListVo> queryWithOrderListByUserId(Long userId);

    /**
     * 根据用户信息分页查询其对应的车辆信息和订单信息
     * @param carQueryVo 用户查询条件信息
     * @param currentPage 当前页
     * @param pageSize 每页最大记录数
     * @return
     */
    PageResult search(CarQueryVo carQueryVo, Integer currentPage, Integer pageSize);

    /**
     * 车辆订单信息表的数据查询
     * @param carId 车辆id
     * @return
     */
    PageResult carOrderSearch(Long carId);

    /**
     * 车辆订单信息条件查询
     * @param currentPage 当前页
     * @param pageSize 每页最大记录数
     * @param carOrderQueryVo  车辆订单查询条件
     * @return
     */
    PageResult carOrderPageSearch(Integer currentPage, Integer pageSize,Long carId, CarOrderQueryVo carOrderQueryVo);

    /**
     * 修改车辆状态禁用
     * @param carId
     * @return
     */
    Boolean modifyCarStatus(String carId);

    /**
     * 修改车辆状态正常
     * @param carId
     * @return
     */
    Boolean modifyCarStatusNormal(String carId);

    /**
     * 将用户跟车辆进行解绑
     * @param carId
     * @return
     */
    Boolean unbindingUserAndCar(String carId);



    /**
     * 将车辆跟用户进行绑定
     * @return
     */
    Boolean bingdingUserAndCar(String carId, String userId);


    /**
     * 根据订单编号查询车辆订单信息
     * @param orderId
     * @return
     */
    CarOrderDetailVo carOrder(Long orderId);
}
